/**   
 * @Title: ExceptionHandlerAdvice.java 
 * @Package com.dragon.learn.advice 
 * @Description: TODO(用一句话描述该文件做什么) 
 * @author dragon   
 * @date 2018年8月22日 上午11:05:22 
 * @version V1.0   
 */
package com.dragon.learn.advice;

import org.springframework.ui.Model;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.ModelAndView;

/** 
 * @ClassName: ExceptionHandlerAdvice 
 * @Description: TODO(这里用一句话描述这个类的作用) 
 * @author dragon
 * @date 2018年8月22日 上午11:05:22 
 *  
 */
@ControllerAdvice
public class ExceptionHandlerAdvice {

	//value = 拦截条件
	@ExceptionHandler(value = Exception.class)
	public ModelAndView exception(Exception e, WebRequest request) {
		
		ModelAndView mv = new ModelAndView("error"); //错误页面
		
		mv.addObject("errorMessage", e.getMessage());
		return mv;
	}
	
	@ModelAttribute
	public void addAttr(Model model) {
		// 所有注解@RequestMapping 都可以获取道这个值
		model.addAttribute("msg", "额外数据");
	}


	@InitBinder
	public void initBinder(WebDataBinder binder) {
		// 过滤掉id字段的值，即忽略id的值
		binder.setDisallowedFields("id");
	}
	
}
